package org.juc.stream;

import java.util.function.Function;

public class FunctionDemo {
    public static void main(String[] args) {
        // 传统接口方法使用匿名内部类实现 并且调用
        // anonymousInterface();

        // 使用函数式接口实现同样功能
        functionInterface();
    }

    /**
     * 函数接口调用
     */
    private static void functionInterface() {
        Function<String,Integer> function = new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                return s.length();
            }
        };
        System.out.println(function.apply("abc"));
    }

    /**
     * 匿名的接口调用
     */
    private static void anonymousInterface() {
        final String  name = "abc";
        TestFunction testFunction = new TestFunction() {
            @Override
            public Integer apply(String str) {
                return str.length();
            }
        };
        System.out.println(testFunction.apply(name));
    }
}

/**
 * 定义一个函数接口，实现跟JDK内置函数接口一样的效果
 *
 * @author Admin
 * @date 2021/11/29
 */
interface TestFunction{
    Integer apply(String str);
}
